Classi in Java 您所在的位置:网站首页 Proprietà e metodi statici Classi in Java

Classi in Java

2024-05-14 20:32| 来源: 网络整理| 查看: 265

Vediamo insieme come programmare ad oggetti in Java.

Classi

Un oggetto, in maniera analoga alla vita reale, ha diverse caratteristiche, chiamate attributi; Allo stesso modo pu貌 anche svolgere dei compiti, che vengono chiamati metodi.

Attributi e metodi di un oggetto sono definiti in una classe, contente tutte le caratteristiche dell鈥檕ggetto. All鈥檌nterno di una classe dev鈥檈ssere presente almeno un costruttore, che permette di istanziare un oggetto partendo dalla classe. Il costruttore si riconosce dai metodi perch茅 ha lo stesso nome della classe e non ha valore di ritorno.

Vediamo un esempio di una classe Rettangolo in Java:

public class Rettangolo { //attributi private double base; private double altezza; //costruttore public Rettangolo(double base, double altezza){ this.base = base; this.altezza = altezza; } //metodi public double area() { return base * altezza; } public double perimetro() { return (base + altezza) * 2; } }

Nel costruttore usiamo la keyword this: la usiamo per distinguere tra i parametri del costruttore base e altezza e gli attributi della classe, che hanno lo stesso nome. this fa sempre riferimento a attributi e metodi della classe dove viene usato.

Qui la classe Rettangolo, il suo costruttore e i suoi metodi usano la parola chiave public, in modo da poter essere utilizzati da altri elementi esterni alla classe Rettangolo, come il main del nostro programma. base e altezza invece sono private, cio猫 non possono essere utilizzati al di fuori di rettangolo.

Proviamo adesso ad utilizzarla nel Main:

public class Main { public static void main(String[] args) { //istanzio r1 Rettangolo r1 = new Rettangolo(10, 20); System.out.println("Rettangolo 1 -> Area: " + r1.area() + " Perimetro: "+ r1.perimetro()); //istanzio r2 Rettangolo r2 = new Rettangolo(5, 4); System.out.println("Rettangolo 2 -> Area: " + r2.area() + " Perimetro: "+ r2.perimetro()); } } Rettangolo 1 -> Area: 200.0 Perimetro: 60.0 Rettangolo 2 -> Area: 20.0 Perimetro: 18.0 Istanze di oggetti

Siccome la classe Rettangolo 猫 solamente un modello di oggetto non possiamo usarla direttamente, dobbiamo istanziare, cio猫 creare allocando in memoria, degli oggetti di tipo Rettangolo; per farlo usiamo la keyword new e il costruttore della classe Rettangolo.

r1 e r2 sono due oggetti di tipo Rettangolo. Appartengono alla stessa classe ma sono due istanze diverse, cio猫 hanno gli stessi attributi e metodi, ma contenenti valori diversi. Se gli attributi base e altezza fossero identici tra le due istanze, allora r1.area() e r2.area() ritornerebbero lo stesso valore.

Per dimostrare che r1 e r2 sono effettivamente indipendenti l鈥檜no dall鈥檃ltro e non che non sono collegati in nessun modo, aggiungiamo le seguenti righe per andare a modificare gli attributi di Rettangolo.

public double getBase() { return base; } public double getAltezza() { return altezza; } public void setBase(double Base) { this.base = base; } public void setAltezza(double altezza) { this.altezza = altezza; }

Le prime due funzioni ci permettono di leggere il valore dei due attributi privati e vengono chiamate getter, le ultime due invece ci permettono di cambiarne il valore e vengono chiamate setter.

Modifichiamo il main e vediamo il risultato:

public class Main { public static void main(String[] args) { Rettangolo r1 = new Rettangolo(10, 20); Rettangolo r2 = new Rettangolo(5, 4); r1.setAltezza(200); r2.setBase(30); System.out.println("Rettangolo 1 -> Altezza: " + r1.getAltezza() + " Base: " + r1.getBase()); System.out.println("Rettangolo 2 -> Altezza: " + r2.getAltezza() + " Base: " + r2.getBase()); } } Rettangolo 1 -> Altezza: 200.0 Base: 10.0 Rettangolo 2 -> Altezza: 4.0 Base: 30.0

Possiamo vedere che solo l鈥檃ltezza di r1 猫 cambiata e non quella di r2, come 猫 cambiata solo la base di r2 e non quella di r1. Questo conferma che due istanze di un oggetto sono separate tra loro.

Attributi e Metodi Statici

Pu貌 darsi che la nostra classe abbia bisogno di un particolare metodo o attributo il cui valore debba essere lo stesso in tutte le istanze della classe. Nel nostro caso sarebbe utile aggiungere un attributo che indichi l鈥檜nit脿 di misura utilizzata da Rettangolo, che sia per貌 consistente tra tutti gli oggetti istanziati.

Usando la keyword static possiamo fare in modo che l鈥檜nit脿 di misura sia istanziata una sola volta e tutti gli oggetti istanziati vi facciano riferimento, vediamo come:

public class Rettangolo { //attributi //... private static String unitaDiMisura = "cm"; //metodi //... public static void setUnitaDiMisura(String unitaDiMisura){ this.unitaDiMisura = unitaDiMisura; } public static String getUnitaDiMisura(){ return unitaDiMisura; } } public class Main { public static void main(String[] args) { Rettangolo r1 = new Rettangolo(10, 20); Rettangolo r2 = new Rettangolo(5, 4); Rettangolo.setUnitaDiMisura("mm"); System.out.println("Unit脿 di misura: " + Rettangolo.getUnitaDiMisura()); } }

Metodi e attributi statici vengono chiamati facendo riferimento al nome della classe, non a quello dell鈥檌stanza.

UML

Il linguaggio UML viene utilizzato per rappresentare diversi aspetti di un software, tra cui la gerarchia delle classi.

La classe Rettangolo in UML verrebbe rappresentata nel seguente modo.

Nella prima sezione abbiamo il nome della classe, Rettangolo.

Nella seconda sezione ci sono gli attributi, sono preceduti da un - perch茅 privati.

Nelle ultime sezione vengono aggiunti i metodi e i costruttori, sono tutti preceduti da un + perch茅 di visibilit脿 pubblica.

Metodi e attributi statici vengono sottolineati.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有